//埃式筛的基本原理就是质数的倍数一定不是质数

#include<stdio.h>

int is_prime[10005]; //为true时， i为素数
int prime[10005];  //存放素数的数组
int cnt;  //1~n的素数个数

void sieve(int n) {
    for (int i = 0; i <= n; i++) {
        is_prime[i] = 1;
    }
    is_prime[0] = is_prime[1] = 0;  //0和1都不是素数
    for (int i = 2; i <= n; i++) {
        if (is_prime[i]) {
            prime[cnt++] = i;  //是素数，存下来
            for (int j = 2 * i; j <= n; j += i) {
                is_prime[j] = 0;  //删除所有的素数的倍数
            }
        }
    }
}

int main() {
    int n;
    scanf("%d", &n);
    sieve(n);
    for (int i = 0; i < cnt; i++) {
        if (i % 10 == 0 && i) {
            printf("\n");
        }
        printf("%-5d", prime[i]);
    }
    printf("\n");
}